// 引入axios
import axios from 'axios'
import router from '../router'

// 创建axios实例
const http = axios.create({
    baseURL: 'https://v3pz.itndedu.com/v3pz',
    timeout: 10000,
    // 设置请求头 终端类型 h5 移动端
    headers: {
        'terminal': 'h5',
    },
})

// config:包含网络请求的所有信息
// 添加请求拦截器
http.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么

    // 获取token（后端返回的身份令牌），用于后续接口请求的身份验证
    const token = localStorage.getItem('h5_token')
    // 不需要token的api
    const whiteUrl = ['/login']
    // 如果token存在，且不是白名单中的api，则添加到请求头
    if (token && !whiteUrl.includes(config.url)) {
        config.headers['h-token'] = token
    }

    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
});

// 添加响应拦截器
http.interceptors.response.use(function (response) {

    // 对接口异常的数据，给用户提示
    // response.status HTTP协议层面的状态码，表示请求是否被服务器正确响应。
    // response.data.code 后端接口返回的业务状态码，表示具体的业务处理结果。

    // 如果后端返回的业务状态码为-1，则给用户提示
    if (response.data.code === -1) {
    }
    // 如果后端返回的业务状态码为-2，则清除本地存储的token和用户信息，并跳转至登录页面
    if (response.data.code === -2) {
        localStorage.removeItem('h5_token')
        localStorage.removeItem('h5_userInfo')
        router.push('/login')
    }
    return response;
}, function (error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    return Promise.reject(error);
});

export default http